package com.flca.frw.util;

import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;

import org.joda.time.DateTime;

public class DateUtils {

	private DateUtils() {
	}

	public static Date toDate(DateTime aDatetime)
	{
		return aDatetime.toDate();
	}
	
	public static DateTime toDateTime(Date aDate)
	{
		return new DateTime(aDate);
	}

	/** 
	 * Dit is een wrapper om Joda DateTime om eenvoudig een Date te maken.
	 * @param jaar
	 * @param maand, 1-based
	 * @param dag, 1-based
	 * @return
	 */
	public static Date makeDate(int jaar, int maand, int dag) {
		DateTime dt = new DateTime(jaar, maand, dag, 0, 0, 0, 0);
		return toDate(dt);
	}
	
	
	/**
	 * Dit is een wrapper om Joda DateTime om makkelijk aantal jaren bij een Date op tellen.
	 * @param aSource
	 * @param aAantalJaren
	 * @return
	 */
	public static Date plusYear(Date aSource, int aAantalJaren) {
		DateTime dt = toDateTime(aSource);
		DateTime newDT = dt.plusYears(aAantalJaren);
		return toDate(newDT);
	}

	/**
	 * Dit is een wrapper om Joda DateTime om makkelijk aantal jaren bij een Date op tellen.
	 * @param aSource
	 * @param aAantalJaren
	 * @return
	 */
	public static Date plusMonth(Date aSource, int aAantalMaanden) {
		DateTime dt = toDateTime(aSource);
		DateTime newDT = dt.plusMonths(aAantalMaanden);
		return toDate(newDT);
	}

	/**
	 * Dit is een wrapper om Joda DateTime om makkelijk aantal jaren bij een Date op tellen.
	 * @param aSource
	 * @param aAantalJaren
	 * @return
	 */
	public static Date plusDay(Date aSource, int aAantalDagen) {
		DateTime dt = toDateTime(aSource);
		DateTime newDT = dt.plusDays(aAantalDagen);
		return toDate(newDT);
	}
	
	public static TimeZone getTimeZone()
	{
		Calendar cal = Calendar.getInstance();
		TimeZone timeZone = cal.getTimeZone();
		return timeZone;
	}
}
